/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.cip.esymons.tesoreria.beans;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.faces.model.SelectItem;
import org.cip.esymons.general.be.PersonaNatural;
import org.cip.esymons.general.util.ControladorAbstracto;
import org.cip.esymons.general.util.FormatoExportacion;
import org.cip.esymons.general.util.Reporteador;
import org.cip.esymons.general.util.Utiles;
import org.cip.esymons.tesoreria.adapters.AporteXCajaMutual;
import org.cip.esymons.tesoreria.adapters.CajaMutualXColegiado;
import org.cip.esymons.tesoreria.bc.MovimientoCuentaDelegate;
import org.cip.esymons.tesoreria.bc.PersonaNaturalDelegate;

/**
 *
 * @author Yeny
 */
public class CajaMutualController {

    private Integer mes;
    private Integer anyo;
    private MovimientoCuentaDelegate delegadoMovimientoCuenta;
    private int tipoBusquedaCMCol;
    private String dnioOcip;
    private PersonaNaturalDelegate delegadoPersonaNatural;

    public CajaMutualController() {
        delegadoMovimientoCuenta = new MovimientoCuentaDelegate();
        delegadoPersonaNatural = new PersonaNaturalDelegate();
        tipoBusquedaCMCol = 1;
    }

    /**
     * @return the mes
     */
    public Integer getMes() {
        return mes;
    }

    /**
     * @param mes the mes to set
     */
    public void setMes(Integer mes) {
        this.mes = mes;
    }

    /**
     * @return the anyo
     */
    public Integer getAnyo() {
        return anyo;
    }

    /**
     * @param anyo the anyo to set
     */
    public void setAnyo(Integer anyo) {
        this.anyo = anyo;
    }

    public SelectItem[] getListaAnyos() {
        try {
            List<Integer> lista = Utiles.aniosParaListarCombo(2010);
            SelectItem[] select = new SelectItem[lista.size()];
            int cont = 0;
            for (Integer i : lista) {
                SelectItem item = new SelectItem(i, i.toString());
                select[cont++] = item;
            }
            return select;
        } catch (Exception ex) {
            SelectItem[] select = new SelectItem[1];
            select[0] = new SelectItem(null, "No existen Años");
            return select;
        }
    }

    //Reporte de Aportes Por Caja Mutual
    public String reporteDeCajaMutual() throws SQLException {
        try {
            Integer numeroTotalColegiados = 0;
            List<String> listaCipNoRepetidos = new ArrayList<String>();
            List<String> listaCips = new ArrayList<String>();
            if (!anyo.equals(0)) {
                if (!mes.equals(0)) {
                    List<AporteXCajaMutual> listaAportesCajaMutual = delegadoMovimientoCuenta.mostrarAporteColegiadosXCajaMutual(anyo, mes);
                    if (listaAportesCajaMutual != null) {
                        if (listaAportesCajaMutual.size() > 0) {
                            for (int m = 0; m <= listaAportesCajaMutual.size() - 1; m++) {
                                listaCips.add(listaAportesCajaMutual.get(m).getNumeroCipAportante());
                            }
                            for (int n = 0; n <= listaCips.size() - 1; n++) {
                                if (!listaCipNoRepetidos.contains(listaCips.get(n))) {
                                    listaCipNoRepetidos.add(listaCips.get(n));
                                }
                            }
                            numeroTotalColegiados = listaCipNoRepetidos.size();
                            Map parametrosCM = new HashMap();
                            Reporteador reporteador = new Reporteador();
                            String tr3 = ControladorAbstracto.getRequestParameter("tipoReporteCaja");
                            parametrosCM.put("numeroColegiados", numeroTotalColegiados);
                            if (tr3.equals("pdf")) {
                                reporteador.exportarReporte("rptCajaMutual", FormatoExportacion.pdf, listaAportesCajaMutual, parametrosCM);
                            } else {
                                reporteador.exportarReporte("rptCajaMutual", FormatoExportacion.excel, listaAportesCajaMutual, parametrosCM);
                            }
                        } else {
                            ControladorAbstracto.warn("No existen Aportes Por Caja Mutual para los datos ingresados");
                        }
                    } else {
                        ControladorAbstracto.warn("No existe Reporte para los Datos Ingresados");
                    }
                } else {
                    ControladorAbstracto.warn("Seleccione un Mes de Pago para el Reporte");
                }
            } else {
                ControladorAbstracto.warn("Seleccione un Año de Pago para el Reporte");
            }
        } catch (Exception e) {
            ControladorAbstracto.warn("No existen Aportes Por Caja Mutual para los datos ingresados");
        }
        return null;
    }

    //Reporte de Aportes Por Caja Mutual X Colegiado
    public String reporteCajaMutualXColegiado() throws SQLException {

        if (tipoBusquedaCMCol == 0) {//dni
            PersonaNatural pnat = delegadoPersonaNatural.buscarXDni(dnioOcip);
            if (pnat != null) {
                dnioOcip = pnat.getPerNroDNI();
            } else {
                ControladorAbstracto.warn("No existe Colegiado con DNI ingresado");
                return null;
            }
        } else {
            //cip
            dnioOcip = Utiles.devuelveCipCompleto(dnioOcip);
        }
        List<CajaMutualXColegiado> listaAportesCajaMutualXCol = delegadoMovimientoCuenta.cajaMutualXColegiado(dnioOcip);
        if (listaAportesCajaMutualXCol != null) {
            if (listaAportesCajaMutualXCol.size() > 0) {
                Reporteador reporteador = new Reporteador();
                String tr3 = ControladorAbstracto.getRequestParameter("tipoReporteCajaCol");
                if (tr3.equals("pdf")) {
                    reporteador.exportarReporte("rptCajaMutualColegiado", FormatoExportacion.pdf, listaAportesCajaMutualXCol, null);
                } else {
                    reporteador.exportarReporte("rptCajaMutualColegiado", FormatoExportacion.excel, listaAportesCajaMutualXCol, null);
                }
            } else {
                ControladorAbstracto.warn("No existen Aportes Por Caja Mutual para el Colegiado Ingresado");
            }
        } else {
            ControladorAbstracto.warn("No existe Reporte para los Datos Ingresados");
        }

        return null;
    }

    /**
     * @return the tipoBusquedaCMCol
     */
    public int getTipoBusquedaCMCol() {
        return tipoBusquedaCMCol;
    }

    /**
     * @param tipoBusquedaCMCol the tipoBusquedaCMCol to set
     */
    public void setTipoBusquedaCMCol(int tipoBusquedaCMCol) {
        this.tipoBusquedaCMCol = tipoBusquedaCMCol;
    }

    /**
     * @return the dnioOcip
     */
    public String getDnioOcip() {
        return dnioOcip;
    }

    /**
     * @param dnioOcip the dnioOcip to set
     */
    public void setDnioOcip(String dnioOcip) {
        this.dnioOcip = dnioOcip;
    }
}
